#!/usr/bin/env python
# -*-coding:UTF-8 -*-
'''
@Project ：爬虫-波波老师
@File：29-多任务协程.py
@Author ：文非
@Date：2021/3/1421:18
@Require：
'''
import asyncio
import time

async def request(url):
    print("正在下载", url)
    # 在异步协程中如果出现了同步木块相关的代码那么久无法实现异步
    # time.sleep(2)
    await asyncio.sleep(2)  # 当在asyncio遇到阻塞操作 必须进行手动挂起，使用await关键字
    print("下载完毕", url)
start = time.time()
urls=[
    "www.baidu.com","www.sougou.com","www.goubanjia.com"
]

# 任务列表：存放多个任务对象
stasks = []
for url in urls:
    """该循环的目的是返回三个循环对象"""
    c = request(url)
    task = asyncio.ensure_future(c)
    stasks.append(task)

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(stasks)) #需要将任务列表封装到wait中

print(time.time()-start)


